An information centric network (ICN) is a conceptualization of networking protocol stack, in particular layers 3 and above of a network protocol stack. A CCN is a particular architecture and implementation of an ICN. ICNs and CCNs are based on the premise of naming resources in these networks. In particular the naming relates to the use of a globally shared namespace for objects that allows entities in these networks to retrieve any content of interest.
Thus, with a CCN a name is utilized to identify a content object instead of an Internet Protocol (IP) address of the content or a host of the content. In an IP network, routing is based on host names (e.g., source and destination addresses). In a CCN by contrast, routing is based on a uniform resource identifier (URI) or similar identifier for a content object. CCN routing is performed hop-by-hop, using a longest prefix matching on the CCN name. All communications seeking to access data are framed as a request and response transaction. A CCN client sends a message referred to as a CCN interest to the nodes in the CCN. The nodes of the CCN respond with a content object identified by a CCN name in the CCN interest. These CCN content objects are returned via a CCN response.
All content object packets are cryptographically signed by their initial provider. A CCN client can thus verify the integrity and authenticity of the content even if the packet comes from untrusted links or untrusted hosts. As a direct effect, CCN nodes in the CCN network are allowed to cache packets locally in a table called the content store. When a CCN network node receives a CCN interest packet, it can check whether its local content store has the requested content object and can send it back if found. The look up in the content store is by the CCN name. If the CCN name is not found in the local content store, then the CCN interest is forwarded according to entries for the CCN name in a forwarding information base (FIB) of the CCN network node.
Using the naming conventions of CCN, one name identifies one content object. If a CCN client requires multiple content objects, then multiple corresponding CCN interests must be generated and sent. CCN does not provide convenient functions to facilitate the retrieval of content objects using their content names. For example, CCN clients cannot name a collection of content objects. If a group of related content objects are required, then the CCN client must send a separate CCN interest for each content object.
Named Function Networking is a recent academic proposal that allows computation units to be named via CCN, in addition to data. NFN allows data to be computed upon. As a trivial example, /companyx/whitepapers/real-time-cloud/pages/3/wordcount. Here, wordcount is a function that computes on the “page 3” data and produces the relevant word count as an object. NFN allows functions written using their prescribed lambda calculus to be executable on a Krivine machine, e.g. /companyx/whitepapers/real-time-cloud/pages/3/<Program code here>, where program code is a series of functional expressions written using lambda calculus.